﻿using HCQ2_Model;
using HCQ2_Model.DocModel;
using HCQ2_Model.DocModel.APIModel;
using HCQ2_Model.DocModel.APIResultModel;
using HCQ2_Model.VLine.InputDto;
using HCQ2_Model.VLine.Params;
using HCQ2_Model.VR.Model;
using HCQ2_Model.VR.Params;
using HCQ2_Model.VRDD.OutputDto._0730;
using HCQ2_Model.VRQDMeta.InputDto._20220418;
using HCQ2_Model.VRQDMeta.OutputDto._20220418;
using System.Collections.Generic;

namespace HCQ2_IDAL
{
    public partial interface IT_DocumentFolderDAL
    {
        /// <summary>
        ///  获取元宇宙素材目录导航
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<QDTreeOutput> GetQDMaterialTreeData(QDMaterialTreeInput param);
        /// <summary>
        ///  获取元宇宙城市目录导航
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<QDTreeOutput> GetQDCityTreeData(QDMaterialTreeInput param);
        /// <summary>
        ///  根据用户id 权限per_id获取对于的文档菜单集合
        /// </summary>
        /// <param name="user_id">用户id</param>
        /// <param name="per_id">权限id</param>
        /// <returns></returns>
        List<T_DocumentFolder> GetDocTreeData(int user_id, string pageType, List<int> per_id, bool isPrivate=false, bool isApprove = false, string folder_path = "",int docType=0);
        /// <summary>
        ///  根据用户id 权限per_id获取对于的文档菜单集合
        /// </summary>
        /// <param name="user_id">用户id</param>
        /// <param name="per_id">权限id</param>
        /// <returns></returns>
        List<T_DocumentFolder> GetDocTreeData(int user_id, int proType, List<int> per_id, bool isPrivate = false, string folder_path = "");
        /// <summary>
        ///  根据商品id获取目录信息
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        T_DocumentFolder GetFolderByFileId(int file_id);

        //*********************************************接口获取商城树*********************************************
        /// <summary>
        ///  获取目录路径列表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        List<DocLevelTree> GetFolderPathList(DocLevelTreeParam model);
        /// <summary>
        ///  
        /// </summary>
        /// <param name="pageType">商城类别：素材、作品</param>
        /// <returns></returns>
        List<T_DocumentGoodFolder> GetDocTreeAPIData(EmpowerTree param, int userId, List<int> per_id);
        /// <summary>
        ///   获取VR端 头记相关目录
        /// </summary>
        /// <param name="pageType">商城类别：素材、作品</param>
        /// <returns></returns>
        List<T_DocumentGoodFolder> GetDocTreeAPIData(EmpowerTree param);

        //********************************************************************************************************
        /// <summary>
        ///  获取导航树统计
        /// </summary>
        /// <param name="pageType">商城类别：素材、作品</param>
        /// <returns></returns>
        List<TreeDataStatistics> GetTreeStatisticsAPI(EmpowerTree param, int userId, List<int> per_id);
        /// <summary>
        ///  获取VR端 头记相关目录统计数据
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<TreeDataStatistics> GetTreeStatisticsAPI(EmpowerTree param);

        //********************************************************************************************************

        /// <summary>
        ///  获取目录以及子目录下课件数量，判断是否允许删除目录
        /// </summary>
        /// <param name="folderPath"></param>
        /// <returns></returns>
        int GetFolderFileNum(string folderPath);
        /// <summary>
        ///  获取目录详情
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        List<FolderDetials> GetFoldersDetail(FolderDetialModel model, string folder_path);
        /// <summary>
        ///  获取用户收藏目录列表及子目录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        List<FolderResult> GetUserFolderCollectList(CollectFolderList model);
        /// <summary>
        ///  获取用户收藏目录
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        List<T_DocumentFolder> GetFolderByCollect(CollectFolderList model);
        /// <summary>
        ///  获取用户权限内可看目录
        /// </summary>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<T_DocumentFolder> GetUserFolderPermiss(int user_id);
        /// <summary>
        ///  获取用户关注目录排行
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<UserFolderRank> GetUserStarFolderRank(FavoriteRankParam param,int user_id);
        /// <summary>
        ///  获取用户关注作品排行
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<UserWorkStar> GetUserStarWorkRank(FavoriteRankParam param, int user_id);
        /// <summary>
        ///  获取作品下载排行
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<UserWorkStar> GetWorkDownloadRank(FavoriteRankParam param, int user_id);
        /// <summary>
        ///  获取作品学习排行
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<UserWorkStar> GetWorkLearnRank(FavoriteRankParam param, int user_id);
        /// <summary>
        ///  获取用户学习排行
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<UserLearnRank> GetUserLearnRank(FavoriteRankParam param, int user_id);
        /// <summary>
        ///  获取用户答题正确率
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<UserAccuracyRank> GetUserOkAccuracyRank(FavoriteRankParam param, int user_id);
        /// <summary>
        ///  获取错题目排行
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<LinesErrorRank> GetLinesErrorRank(FavoriteRankParam param, int user_id);
        /// <summary>
        ///  验证pid是否属于folder_path的只目录
        /// </summary>
        /// <param name="fodler_path"></param>
        /// <param name="pid"></param>
        /// <returns></returns>
        int CheckParentTree(string fodler_path,int pid);
        /// <summary>
        ///  判断当前目录下是否有子目录
        /// </summary>
        /// <param name="folder_path"></param>
        /// <returns></returns>
        int CheckIsChild(string folder_path);
        /// <summary>
        ///  判断当前目录是否有课件
        /// </summary>
        /// <param name="folder_id"></param>
        /// <returns></returns>
        int CheckIsWorks(int folder_id);

        //******************************************VLions接口需求规格-20200622需求********************************
        /// <summary>
        ///  根据id获取path
        /// </summary>
        /// <param name="folderIds"></param>
        /// <returns></returns>
        List<string> GetFolderPathByIds(List<int> folderIds);
        /// <summary>
        ///  获取作品数
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        int GetWorkNum(WorkNumInputDto dto, int user_id, List<string> folderPath);
        /// <summary>
        ///  获取目录数
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        int GetFolderNum(FolderNumInputDto dto, List<int> per_id);
        /// <summary>
        ///  获取上课人数
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        int GetLearnNum(LearnClassNumInputDto dto);
        /// <summary>
        ///  获取直播课堂数
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        int GetLinesClassNum(LearnClassNumInputDto dto, List<int> per_id);
        /// <summary>
        ///  获取我的店铺
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<MyFloderModel> GetMyFloderList(MyFloderParam param, int user_id);
        /// <summary>
        ///  获取我的店铺
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<MyFloderModel> GetAllFloderList(AllFloderParam param,int user_id);
        /// <summary>
        ///  获取我的课程（目录）列表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<MyCourseList> GetMyCourseList(MyCourseParam param, int user_id);
        /// <summary>
        ///  获取最新的作品
        /// </summary>
        /// <param name="folder_path"></param>
        /// <returns></returns>
        List<ModifyGoodList> GetMyModifyGoodList(string folder_path);
        /// <summary>
        ///  获取店铺下最新的两个商品【包含子目录】
        /// </summary>
        /// <param name="folder"></param>
        /// <returns></returns>
        List<MyFloderGoodsList> GetGoodsByFolders(string folder_path, int fileListNum = 2);
    }
}
